package com.google.code.lf.gfm.service;

import java.io.File;

import com.google.code.lf.gfm.model.grisbi.GrisbiFile;

/**
 * Interface du service de manipulation des fichiers de données <a href="http://grisbi.org">Grisbi</a>.
 * <br/>Le binding bean/xml utilise <a href="https://jaxb.dev.java.net/">JAXB</a>.
 *
 * @author gael.lorent-fonfrede
 */
public interface IGrisbiFileService {
	/** Id de bean Spring : grisbiFileService. */
	public static final String BEAN_ID = "grisbiFileService";

	/**
	 * Lecture d'un fichier de données <a href="http://grisbi.org">Grisbi</a>.
	 * <br/>Le fichier est lu et mappé automatiquement vers le bean métier.
	 * 
	 * @param xmlFile Le {@link File} à lire (format xml attendu).
	 * @return Le bean {@link GrisbiFile} initialisé.
	 */
	public GrisbiFile readGrisbiFile(File xmlFile);

	/**
	 * Ecriture d'un fichier de données <a href="http://grisbi.org">Grisbi</a>.
	 * <br/>Le fichier xml est écrit à partir du contenu du bean métier.
	 * 
	 * @param gsbFile Le bean {@link GrisbiFile} à écrire.
	 * @param xmlFile Le {@link File} à écrire (format xml attendu).
	 * @param encoding Le nom de l'encodage à utiliser.<br/>Peut-être <code>null</code> : par défaut, <a href="https://jaxb.dev.java.net/">JAXB</a> utilise 'UTF-8'.<br/>Pour les fichiers Grisbi, utiliser la valeur {@link GrisbiFile#GrisbiFileEncoding}.
	 */
	public void writeGrisbiFile(GrisbiFile gsbFile, File xmlFile, String encoding);
}
